In modern microprocessors, support of security functions is of increasing importance. One primary reason is that increasingly, processors are networked. Communications to and from the network can be monitored and, therefore, cannot be trusted. This lack of security can require authentication and encryption functions to be performed in the constituent networked processors.
The use of networked computers for business purposes, such as enabling payment systems and so on, requires authentication and protection of data and, in cases where it is distributed over the network, code. Authentication can be generally defined as the determination as to whether code or data has been tampered with or otherwise altered. Hardware and software in a networked system can be proprietary. This can require support for such functions as authenticating the operating system image before it is invoked or started. On a non-proprietary system the user can run whatever software they choose. On a proprietary system, software is controlled by the system builder. A system can be open source, yet proprietary.
The network can also be used to distribute content such as software, audio and video that is to be protected from unauthorized access or use. The network can further be used for payment systems. All of these distribution functions depend on providing security mechanisms in the computer systems to ensure that unauthorized accessing of code or data does not take place.
A hardware mechanism can be provided for security that ensures that the initial operating system image has not been tampered with. However, once the system is started, the integrity of the security mechanism depends upon the security of the operating system. Operating systems, however, can be insecure, with some operating systems requiring security fixes at a rate of up to one a week. These continually discovered security breaches represent windows of opportunity for an unauthorized third party to access code.
Other conventional systems provide hardware based security functions in one of two ways. The first is a separate security chip in the computer system, capable of providing the authentication, encryption, and key management functions, such as those specified by the trusted computing alliance (TCA™). Such a separate chip has an advantage that its interface protocols can be limited to these security functions. This can make it very difficult to mount a software attack on such a chip. On the other hand, because the chip is separate from the microprocessor, it is relatively easy to monitor the interfaces and circumvent the protocols. This type of mechanism, for example, therefore does not provide good protection for implementing a secure boot function because the authenticated operating system image can relatively easily be replaced.
Another type of conventional implementation of security hardware involves a security unit integrated in the processor that may, for example, be connected to the processor input/output (I/O), or the memory interface. These integrated security devices provide the authentication and/or encryption functions on the processor chip. Such an arrangement has the advantage that the interface between the processor and such a unit is not easily monitored, and therefore provides a higher degree of protection than a separate security chip. Some of the disadvantages of this arrangement, however, are that the unit can occupy a significant silicon area on the processor chip, which is typically implemented in significantly more expensive technology and that such a unit, if it is to be realized at a reasonable cost (area), can provide basic functionality only. In other words, the unit is not generally programmable, and the array of security functions it can provide is limited. A third limitation can be that communications on the on-chip bus may be monitored if the operating system is compromised.
Therefore, a need exists for a hardware-based security mechanism that overcomes at least some of the disadvantages of conventional hardware-based security mechanisms.